
const { app, BrowserWindow, Menu,Tray ,ipcMain} = require('electron')
const path = require('path')

app.whenReady().then(()=>{
    initMenu()
    initTray()
    initDockMenu()
    createWindow()

})
let mainWindow;
ipcMain.handle('buttonClick',(event,flag)=>{
    if(flag) {
        initContextMenu()
    }
})

const options = [
    {
      label: '自定义菜单',
      submenu: [
        {
          label: '点我试试',
          click: () => {
            console.log('try')
          },
        },
        {
          label: '默认选中',
          type: 'checkbox',
          checked: true,
        },
        { type: 'separator' },
        {
          label: '单选菜单',
          submenu: [
            { label: '选项1', type: 'radio' },
            { label: '选项2', type: 'radio' },
            { label: '选项3', type: 'radio' },
          ],
        },
        {
          label: '多级菜单',
          submenu: [
            {
              label: '二级菜单',
              submenu: [{ label: '三级菜单', submenu: [{ label: '四级菜单' }] }],
            },
          ],
        },
      ],
    },
    {
      label: '调试菜单',
      submenu: [
        { role: 'toggleDevTools' },
        {
          role: 'reload',
          accelerator: 'Shift+K',
          click: () => {
            console.log('reload')
          },
        },
      ],
    },
  ]

// 1.初始化窗口菜单
function initMenu() {
   const tpl = [...options]
    // mac系统：第一个菜单位置保留,mac自动设置第一个菜单，菜单名与应用名相同
    if(process.platform==='darwin') {
        tpl.unshift({label:''})
    }
     // 创建原生菜单
     const menu = Menu.buildFromTemplate(tpl)
     Menu.setApplicationMenu(menu)
}
// 2.初始化上下文菜单
function initContextMenu() {
    // 2.上下文菜单
    const menu = Menu.buildFromTemplate([
        {
            label: '文字加粗',
            click: ()=> {
                mainWindow.webContents.send('on-menu','bold')

            }
        },
        {
            label: '改变颜色',
            click: ()=> {
                mainWindow.webContents.send('on-menu','color')
            }
        }
    ])
    menu.popup({
        callback:()=>{
            console.log('context menu')
        }
    })
}
// 3.初始化托盘菜单
let tray = null
function initTray() {
    tray = new Tray(path.join(__dirname,'logoTemplate.png'))
    const menu = Menu.buildFromTemplate(options)
    tray.setToolTip('electron-base')
    tray.setContextMenu(menu)
    tray.on('click',()=>{
        console.log('tray click')
    })
}

// 4.dock 菜单
function initDockMenu() {
  // mac系统设置dock菜单
  if(process.platform === 'darwin') {
    const { dock } = app
    const menu = Menu.buildFromTemplate(options)
    dock.setMenu(menu)
  } 
}

function createWindow() {
    mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences:{
            nodeIntegration:false,
            sandbox:false,
            preload:path.join(__dirname,'../preload.js')
        }
    })
    // mac系统，应用中所有窗口共享左上角菜单；window/linux系统可以为BrowserWindow单独设置菜单；
    // mainWindow.setMenu(menu)

    mainWindow.loadFile(path.join(__dirname,'../renderer/index.html'))

    // initContextMenu()
}